#include<cstdio>
#include<algorithm>
#include<vector>
#include<map>
#include<math.h>
#include<iostream>
using namespace std;
const int maxn=1e4;

struct node{
    string name;
    int Gp=-1;
    int Gm=-1;
    int Gf=-1;
    int G=-1;
    node(string name,int Gp,int Gm,int Gf,int G):name(name),Gp(Gp),Gm(Gm),Gf(Gf),G(G){}
    node(){}
};
vector<node> ans(maxn);
map<string,int>name2id;
int id=0;
int findseq(string name){
    if(name2id.find(name)==name2id.end()){
        name2id[name]=id++;
    }
    return name2id[name];
}

bool cmp(node a,node b){
    if(a.G!=b.G){return a.G>b.G;}
    return a.name<b.name;
}

int main(){
    //freopen("in.txt","r",stdin);

    int P,M,N;
    ans.resize(maxn);
    scanf("%d %d %d",&P,&M,&N);
    string name;
    int Gp,Gm,Gf,G;
    for(int i=0;i<P;i++){
        cin>>name;scanf("%d",&Gp);
        if(Gp<200){continue;}
        int tid=findseq(name);
        ans[tid]=node{name,Gp,-1,-1,-1};
    }
    for(int i=0;i<M;i++){
        cin>>name;scanf("%d",&Gm);
        if(name2id.find(name)==name2id.end()){continue;}
        int tid=name2id[name];
        ans[tid].Gm=Gm;
    }
    for(int i=0;i<N;i++){
        cin>>name;scanf("%d",&Gf);
        if(name2id.find(name)==name2id.end()){continue;}
        int tid=name2id[name];
        if(Gf>=ans[tid].Gm){G=Gf;}
        else{G=round((double)ans[tid].Gm*0.4+Gf*0.6);}
        if(G<60){continue;}
        ans[tid].Gf=Gf;ans[tid].G=G;
    }
    sort(ans.begin(),ans.begin()+P,cmp);
    for(int i=0;i<ans.size();i++){
        if(ans[i].G<60)break;
        printf("%s %d %d %d %d\n",ans[i].name.c_str(),ans[i].Gp,ans[i].Gm,ans[i].Gf,ans[i].G);
    }
}
